home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / misc / emu / prlink_080b.lha / prlink-0.8.0b / src / prsample.c < prev    next >
C/C++ Source or Header  |  1995-04-03  |  2KB  |  102 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. #include "prtrans.h"
  5.  
  6. #if !defined(__MAIN_C__)
  7. #define main    main_prsample
  8. #endif
  9.  
  10. #ifndef DEFAULT_BUFFER_SIZE
  11. #define DEFAULT_BUFFER_SIZE 65536
  12. #endif
  13.  
  14. int main (int argc, char **argv);
  15.  
  16. int main (int argc, char **argv) {
  17.   FILE *file;
  18.   unsigned long length, buffer_size = DEFAULT_BUFFER_SIZE;
  19.   char **parameters = argv;
  20.   char *buffer;
  21.   baseaddr = portaddr[DEFAULT_PORT];
  22.  
  23.   while (*++parameters && **parameters == '-') { /* check for options */
  24.     if (parameters[0][1] == '-') { /* "--" ends options */
  25.       parameters++;
  26.       break;
  27.     }
  28.  
  29.     switch (parameters[0][1]) {
  30.     case 'p':
  31.       baseaddr = strtoul (*++parameters, NULL, 16);
  32.  
  33.       if (baseaddr > 3) {
  34.         fprintf (stderr, "%s: The printer port number must be between 0 and 3.\n",
  35.                          *argv);
  36.         return 1;
  37.       }
  38.  
  39.       baseaddr = portaddr[baseaddr];
  40.       break;
  41.  
  42.     case 'b':
  43.       buffer_size = strtoul (*++parameters, NULL, 10);
  44.       break;
  45.  
  46.     case '?':
  47.     case 'h':
  48.     Usage:
  49.       fprintf (stderr, "%s: Plays samples on the remote computer.\n\n", *argv);
  50.       fprintf (stderr, "Usage: %s [options] [filename(s)]\n",
  51.                        *argv);
  52.       fprintf (stderr, "Options:\n\t"
  53.                          "-p port\t"
  54.                              "Specify the printer port (0 to 3)\nt"
  55.                          "-b buffersize\t"
  56.                              "Specify the sample buffer size in bytes.\n");
  57.       return 1;
  58.  
  59.     default:
  60.       fprintf (stderr, "%s: Illegal option `%s'.\n", *argv, *parameters);
  61.       goto Usage;
  62.     }
  63.   }
  64.  
  65.   if (!(buffer = malloc (buffer_size))) {
  66.     fprintf (stderr, "%s: Could not allocate the sample buffer.\n", *argv);
  67.     return 3;
  68.   }
  69.  
  70.   if (prinit ()) {
  71.     fprintf (stderr, "%s: Could not get the I/O permissions.\n", *argv);
  72.     return 4;
  73.   }
  74.  
  75.   if (!*parameters) { /* no file name specified */
  76.     file = stdin;
  77.     goto transfer;
  78.   }
  79.  
  80.   while (*parameters) {
  81.     if (!(file = fopen(*parameters, "rb"))) {
  82.       fprintf (stderr, "%s: Could not open the file `%s'.\n", *argv,
  83.                        *parameters);
  84.       return 5;
  85.     }
  86.  
  87. transfer:
  88.     while (!feof (file)) {
  89.       length = fread (buffer, 1, buffer_size, file);
  90.       send (buffer, length);
  91.     }
  92.  
  93.     fclose (file);
  94.  
  95.     if (*parameters) parameters++;
  96.   }
  97.  
  98.   prclose ();
  99.  
  100.   return 0;
  101. }
  102.